package Demo;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DELL
 * Date: 2023-01-10
 * Time: 20:31
 */

/**
 * 定时器得构成: 一个带优先级得阻塞队列
 * 阻塞队列中得任务都有各自得执行时刻(delay). 最先执行的任务一定是delay最小的.使用优先级
 * 的队列就可以高效的把这个delay最小的任务找出来
 *
 * 队列中的每一个元素是一个Task对象
 * Task中带有一个时间属性,队首元素就是即将执行
 * 同时有一个worker线程一直烧苗对手元素,看对手元素是否需要执行
 */


/**
 *  Task类用于描述一个任务(作为Timer的内部类). 里面包含一个Runnable对象和一个time(毫秒时间戳)
 *  这个对象需要放到优先队列中.因此需要实现Comparable接口
 */

import java.util.Timer;
import java.util.TimerTask;

/**
 * 简单使用定时器
 * Timer类提供的核心接口为Schedule,并指定这个任务多长时间后执行
 */
public class Thread_Demo20 {

    public static void main(String[] args) {
        System.out.println("程序启动");
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("运行定时器任务1");
            }
        },3000);

        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("运行定时器任务2");
            }
        },2000);

        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                System.out.println("运行定时器任务3");
            }
        },1000);
    }
}
